package com.zhihuishu.micro.course.openapi.course;


import java.util.List;
import java.util.Map;

import com.zhihuishu.micro.course.dto.CourseDto;
import com.zhihuishu.micro.course.openapi.course.dto.CcCourseOpenDto;
import com.zhihuishu.micro.course.openapi.course.dto.CourseClipsOpenDto;
import com.zhihuishu.micro.course.openapi.course.dto.CourseOpenDto;
import com.zhihuishu.remote.RemoteException;
import com.zhihuishu.remote.RemoteResult;

public interface CourseOpenService {
	/**
	 * 
	     * @discription 创建课程
	     * @author jipeng       
	     * @created 2016年9月9日 下午3:08:30     
	     * @param courseName 课程名称
	     * @param createUser 创建者
	     * @return
	 */
	RemoteResult<CourseOpenDto> create(String courseName ,long createUser) throws RemoteException ;
	
	/**
	 * 更新课程
	 * @param course
	 * @return
	 * @throws RemoteException
	 */
	RemoteResult<Void> update(CourseOpenDto course ,long updateUser) throws RemoteException ;
	
	
	/**
	 * 根据用户ID，查询相应用户创建的课程列表
	 * @param userId
	 * @return
	 */
	RemoteResult<List<CourseOpenDto>> userCourseList(long userId) throws RemoteException ;
	
	/**
	 * 查询课程基本信息
	 * @param courseId
	 * @return
	 * @throws RemoteException
	 */
	RemoteResult<CourseOpenDto> queryCourseInfo(long courseId) throws RemoteException ;
	
	
	
	/**
	 * 删除课程
	 * @author liushaowei
	 * @date 2016年9月14日 上午10:36:46
	 * @param courseId
	 * @param deleteUser
	 * @return
	 *
	 */
	RemoteResult<Void>  remove(long courseId, long deleteUser);
	
	// =================================== 课程片花接口 ====================================
	
	/**
	 * 查询片花
	 * 
	 * @param clipsId
	 * @return
	 * @throws RemoteException
	 */
	RemoteResult<CourseClipsOpenDto> queryCourseClips(long clipsId) throws RemoteException;

	/**
	 * 更新片花
	 * 
	 * @param clips
	 * @return
	 * @throws RemoteException
	 */
	RemoteResult<Void> updateCourseClips(CourseClipsOpenDto clips) throws RemoteException;

	/**
	 * 保存片花(需指定课程ID)
	 * 
	 * @param courseId
	 * @param clips
	 * @return 返回片花ID
	 * @throws RemoteException
	 */
	RemoteResult<Long> createCourseClips(long courseId, CourseClipsOpenDto clips) throws RemoteException;
	
	/**
	 * @Description 返回  海外课程的所有课程
	 * @author shisong
	 * @date 2017年1月9日 下午2:33:38
	 * @modifyNote 
	 * @param courseIds
	 * @return
	 * @throws RemoteException
	 */
	RemoteResult<List<CourseOpenDto>> overseasCourseList(List<Long> courseIds) throws RemoteException;

}
